package br.com.post.persistence;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {
	private static final SessionFactory sessionFactory;
	
	/**
	 * Bloco estático para ser utilizado em toda aplicação. Utilizado para a conexão 
	 * com o banco e configuração do hibernate, ele dura a vida da aplicação
	 */
	static {
		try {
		  // Cria o  SessionFactory para hibernate.cfg.xml
		  sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
		  System.out.println("SUBIU O FACTORY");
		} catch (Throwable ex) {
		      // Cria o log de exception
		      System.err.println("Initial SessionFactory creation failed." + ex);
		      throw new ExceptionInInitializerError(ex);
		   }
	}
	
	/**
	 * Método estático retorna uma sessão do hibernate aberta
	 * @return session
	 */
	public static Session getSession() {
	   return sessionFactory.openSession();
	}
}
